package presentation;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import dao.*;
import model.Empleado;
import services.ValidacionesServicio;

/**
 * Servlet implementation class AgregarEmpleadoServlet
 */
@WebServlet("/ModificarEmpleadoServlet")
public class ModificarEmpleadoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	public EmpleadoDAO empleadoService = null;
	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public ModificarEmpleadoServlet() {
		super();
		
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		List<Empleado> empleados = this.empleadoService.getAll();

		request.getSession().setAttribute("Empleados", empleados);
		request.getSession().setAttribute("MensajeModificarEmpleado", null);

		response.sendRedirect("modificarEmpleado.jsp");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//doGet(request, response);
		String mensaje = null;

		Integer invalido = 0;
		try {

			String empleado = request.getParameter("AsignarEmpleado");
			String trimempleados[] = empleado.split(" - ");
			Integer dni = Integer.parseInt(trimempleados[0]);

			Empleado emp = empleadoService.getById(dni);

			if (!ValidacionesServicio.validarString(request.getParameter("inputNombre")))
				invalido += 1;
			if (!ValidacionesServicio.validarString(request.getParameter("inputApellido")))
				invalido += 1;
			if (!ValidacionesServicio.validarString(request.getParameter("inputPassword")))
				invalido += 1;
	
			System.out.println(invalido);

			if (invalido <= 3) {
				if (ValidacionesServicio.validarString(request.getParameter("inputNombre"))) {
					emp.setNombre(request.getParameter("inputNombre"));
				}
				if (ValidacionesServicio.validarString(request.getParameter("inputApellido"))) {
					emp.setApellido(request.getParameter("inputApellido"));
				}
				if (ValidacionesServicio.validarString(request.getParameter("inputPassword"))) {
					emp.setPassword(request.getParameter("inputPassword"));
				}				
				
				this.empleadoService.update(emp);
				List<Empleado> empleados = this.empleadoService.getAll();

				request.getSession().setAttribute("Empleados", empleados);
				
				mensaje = "Empleado modificado exitosamente!";

			}
			else{
				 mensaje = "Datos invalidos.";
			}

		} catch (Exception e) {
			System.out.println(e.getMessage());
			 mensaje = "Error al modificar.";

		}
		
		request.getSession().setAttribute("MensajeModificarEmpleado", mensaje);
		

	}
	@Override
	public void init(ServletConfig config) {
		WebApplicationContext context = WebApplicationContextUtils
				.getRequiredWebApplicationContext(config.getServletContext());
		this.empleadoService = (EmpleadoDAO) context.getBean(EmpleadoDAO.class);
	}
}
